package com.bit.aop.proxy;

import org.springframework.cglib.proxy.Enhancer;

import java.lang.reflect.Proxy;

//真实的买房人
public class Main {
    public static void main(String[] args){
        HouseSubject target=new RealHouseSubject();//找到要买的目标表；
//        HouseSubject houseSubject=new HouseProxy(target);//中介进行代理此目标房；
//        //houseSubject.selectHouse();//进行卖房子；
//        houseSubject.rentHouse();//进行出租房子；



//        //jdk动态代理；
//        HouseSubject houseProxy=(HouseSubject) Proxy.newProxyInstance(target.getClass().getClassLoader(),new Class[]{HouseSubject.class},new JDKInvocation(target));
//        //进行动态创建一个实例类对象；
//        houseProxy.rentHouse();

       //Cglib 动态代理
        HouseSubject houseProxy=(HouseSubject) Enhancer.create(target.getClass(),new CGlibMethodInterceptor(target));
      //Enhancer；跟随MethodInterceptor进行使用相同的框架;
        houseProxy.rentHouse();
    }

}
